<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 1.构造函数 调用方式 换成new （实例化）
            // 表示一个类的概念 ，所有 首字符约定俗成是大写；

        // function Person(name,age){
        //     // 构造函数里的this 指向 实例化的对象；
        //     this.name = name;
        //     this.age = age;
        //     this.fn = function(){
        //         console.log("fn");
        //     }
        // }

        // let zhangsan = new Person("张三",20); // 实例化
        // let lisi  = new Person("李四",22);

        // 2.公共空间 ; 构造函数 有自己的公共空间；prototype 原型；
        // 一般 我们会把属性 放在 构造函数内部
        // 把方法 放在公共空间原型上；
        // 整个构造函数 是由2个部分 1.构造函数自身 2.构造函数的原型 共同构成；
        // function Person(name,age){
        //     // 构造函数里的this 指向 实例化的对象；
        //     this.name = name;
        //     this.age = age;
        //     // this.fn = function(){
        //     //     console.log("fn");
        //     // }
        // }
        // Person.prototype.fn = function(){
        //     console.log("fn");
        // }

        // let zhangsan = new Person("张三",20); // 实例化
        // let lisi  = new Person("李四",22);
        // console.log(zhangsan.fn===lisi.fn); // false;


        // 3.练习：

        // 所有狗类的公共特性及行为；
        function Dog(name){
            this.name = name;
        }
        Dog.prototype.action = function(){
            console.log("wow wow !!!");
        }


        let xiaohaung = new Dog("小黄");
        xiaohaung.action();
        let xiaohei  = new Dog("小黑");
        setInterval(()=>{
            xiaohei.action();
        },1000)

        // 把选项卡改成 构造函数；
    </script>
</body>
</html>